VIM ex 特殊字符
注意: 这些是要执行的 Ex 命令行中的特殊字符。如果你想要在录入时插入特殊的内容,
可以使用 CTRL-R
命令。例如,%
表示当前文件名,而 CTRL-R %
则立即插入当前文件
名。见 c_CTRL-R
。
备注: 在 Vim 脚本中要避免特殊字符,可用 fnameescape()
。
在 Ex 命令中,下列字符在可以使用文件名的地方有特殊的意义。它们同样可以用到表达
式函数 expand()
中 expand()
。
% 被当前文件名取代。 :_% c_%
# 被轮换文件名取代。 :_# c_#
#n (n 是一个数字) 被第 n 个缓冲区的文件名取代。 :_#0 :_#n
"#0" 与 "#" 相同。 c_#n
## 被参数列表里的所有文件名 (使用空格符分隔) 取代。 :_## c_##
文件名中的空格符前面会加一个反斜杠。
#<n (n 是一个正数) 被第 n 个旧文件名取代。 :_#< c_#<
要得到这个数值,见 :oldfiles 或 v:oldfiles。 E809
{仅当编译时加入 +eval 和 +viminfo 特性才可用}
注意: 除了 #<n
以外,它们只给出输入时使用的文件名。如果需要绝对路径 (当从另
一个目录使用文件名的时候),你需要加 :p
。见 filename-modifiers
。
#<n
项返回绝对路径,但在主目录下的文件名会以 ~/
开始。
注意: 空格符前面会插入反斜杠,以便 Vim 命令会正确地解释文件名。但是 shell 命令
不会如此。为此,你可以使用引号 (但对包含引号和通配符的文件名会有问题):
:!ls "%"
:r !spell "%"
要避免 %
和 #
的特殊含义,可以在它前面插入一个反斜杠。细节: 只要有反斜杠在
这些字符前面,它们就不具备特殊含义,不管有多少个反斜杠。